/**
 * 股票选择器页面的主要功能
 */
class StockSelector {
    constructor() {
        // 初始化市场数据管理器
        this.marketDataManager = window.MarketDataManager ? 
            new window.MarketDataManager() : null;
            
        // 初始化
        this.init();
    }
    
    /**
     * 初始化
     */
    init() {
        // 等待DOM加载完成
        document.addEventListener('DOMContentLoaded', () => {
            // 初始化事件监听
            this.initEventListeners();
            
            // 如果市场数据管理器存在，订阅市场数据
            if (this.marketDataManager) {
                this.subscribeMarketData();
            }
        });
    }
    
    /**
     * 初始化事件监听
     */
    initEventListeners() {
        // 筛选条件变更
        document.querySelectorAll('input[type="checkbox"], input[type="range"]').forEach(input => {
            input.addEventListener('change', () => {
                this.updateFilterResults();
            });
        });
        
        // 视图切换按钮
        const listViewBtn = document.querySelector('button svg[d*="M4 6h16M4 10h16"]').closest('button');
        const gridViewBtn = document.querySelector('button svg[d*="M4 6a2 2 0 012-2h2"]').closest('button');
        
        if (listViewBtn && gridViewBtn) {
            listViewBtn.addEventListener('click', () => this.switchView('list'));
            gridViewBtn.addEventListener('click', () => this.switchView('grid'));
        }
        
        // 推荐组合按钮
        document.querySelectorAll('.mt-6.bg-white button').forEach(button => {
            button.addEventListener('click', (e) => {
                // 移除所有按钮的活动状态
                document.querySelectorAll('.mt-6.bg-white button').forEach(btn => {
                    btn.classList.remove('bg-blue-600', 'text-white');
                    btn.classList.add('bg-gray-100', 'text-gray-700');
                });
                
                // 设置当前按钮为活动状态
                e.currentTarget.classList.remove('bg-gray-100', 'text-gray-700');
                e.currentTarget.classList.add('bg-blue-600', 'text-white');
                
                this.loadPortfolioRecommendation(e.currentTarget.textContent.trim());
            });
        });
    }
    
    /**
     * 切换视图模式
     * @param {string} viewMode 视图模式：'list' 或 'grid'
     */
    switchView(viewMode) {
        const listViewBtn = document.querySelector('button svg[d*="M4 6h16M4 10h16"]').closest('button');
        const gridViewBtn = document.querySelector('button svg[d*="M4 6a2 2 0 012-2h2"]').closest('button');
        
        if (viewMode === 'list') {
            listViewBtn.classList.remove('bg-gray-100', 'text-gray-600');
            listViewBtn.classList.add('bg-blue-600', 'text-white');
            
            gridViewBtn.classList.remove('bg-blue-600', 'text-white');
            gridViewBtn.classList.add('bg-gray-100', 'text-gray-600');
            
            // TODO: 实现列表视图
            console.log('切换到列表视图');
        } else {
            gridViewBtn.classList.remove('bg-gray-100', 'text-gray-600');
            gridViewBtn.classList.add('bg-blue-600', 'text-white');
            
            listViewBtn.classList.remove('bg-blue-600', 'text-white');
            listViewBtn.classList.add('bg-gray-100', 'text-gray-600');
            
            // TODO: 实现网格视图
            console.log('切换到网格视图');
        }
    }
    
    /**
     * 更新筛选结果
     */
    updateFilterResults() {
        // 获取所有选中的行业
        const selectedIndustries = Array.from(document.querySelectorAll('input[name="industry"]:checked'))
            .map(checkbox => checkbox.id);
            
        // 获取市值范围
        const marketCapRange = document.querySelector('input[type="range"]').value;
        
        // 获取AI推荐强度
        const aiStrength = document.querySelector('input[type="range"]:nth-of-type(2)').value;
        
        // TODO: 根据筛选条件获取股票数据
        console.log('筛选条件更新:', {
            industries: selectedIndustries,
            marketCap: marketCapRange,
            aiStrength: aiStrength
        });
        
        // 更新底部状态栏的筛选条件
        this.updateFilterSummary(selectedIndustries, marketCapRange, aiStrength);
    }
    
    /**
     * 更新底部状态栏的筛选条件摘要
     * @param {Array} industries 选中的行业
     * @param {string} marketCap 市值范围
     * @param {string} aiStrength AI推荐强度
     */
    updateFilterSummary(industries, marketCap, aiStrength) {
        const industryNames = {
            tech: '科技',
            finance: '金融',
            medical: '医药',
            consumer: '消费'
        };
        
        const selectedIndustryNames = industries.map(id => industryNames[id]).join(', ');
        
        const filterSummary = document.querySelector('footer .flex.items-center.space-x-4 div:first-child');
        if (filterSummary) {
            filterSummary.textContent = `筛选条件: ${selectedIndustryNames} + 市值>${marketCap}亿 + AI推荐>${aiStrength*20}%`;
        }
        
        // 更新时间
        const updateTimeElement = document.querySelector('footer .flex.items-center.space-x-4 div:nth-child(2)');
        if (updateTimeElement) {
            const now = new Date();
            updateTimeElement.textContent = `更新时间: ${now.getHours()}:${String(now.getMinutes()).padStart(2, '0')}`;
        }
    }
    
    /**
     * 加载投资组合推荐
     * @param {string} portfolioType 组合类型
     */
    loadPortfolioRecommendation(portfolioType) {
        console.log(`加载${portfolioType}组合推荐`);
        // TODO: 根据组合类型加载推荐股票
    }
    
    /**
     * 订阅市场数据
     */
    subscribeMarketData() {
        if (!this.marketDataManager) return;
        
        // 获取表格中的所有股票代码
        const stockCodes = Array.from(document.querySelectorAll('table tbody tr td:first-child'))
            .map(td => td.textContent.trim());
            
        // 订阅这些股票的实时数据
        stockCodes.forEach(code => {
            this.marketDataManager.subscribe(code, (data) => {
                this.updateStockData(code, data);
            });
        });
    }
    
    /**
     * 更新股票数据
     * @param {string} code 股票代码
     * @param {Object} data 股票数据
     */
    updateStockData(code, data) {
        // TODO: 更新股票数据显示
        console.log(`更新股票数据: ${code}`, data);
    }
}

// 创建股票选择器实例
window.stockSelector = new StockSelector();